Modern communications systems rely heavily on data compression techniques for "lossy" coding of signals such as speech, audio, still images and video sequences. As can be understood by those skilled in the art, coding of signals can done in either "lossy" or "lossless" methods, where lossy coding means that some distortion is introduced to the input signal by the coding system.
FIG. 1 depicts a general structure of a module (10) for signal compression and decompression in accordance with the present invention. The module (10) comprises an encoder (100) and a decoder (150). For data-receiving operations, only a decoder (150) is required. For data transmissions between two separate stations, the encoder and decoder should be provided at both the transmitting station and the receiving station. As a conceptual tool, compression will be described as occurring at the encoder (100) and decompression will be described as occurring at the decoder (150). In practical implementation, the encoder (100) and decoder (150) are contained in a single data module (10), which is implemented at both the transmitter station and receiver station.
The input signal (110) to the system is fed into the feature extraction unit (120) of the encoder (100). The extracted features are quantized by the feature quantization unit (130) and the resulting representation (131), which may include indices, is sent to the decoder (150). The features decoding unit (160) receives the lossy representation (151) and generates the lossy version (161) of the features from the lossy representation (151). The lossy version (161) is used by the signal reconstruction module (170) to produce the reconstructed output signal (180).
As can be understood from the description above, quantization methods play a major role in data compression. Quantization can be done on a single feature of the compressed signal, commonly called Scalar Quantization (SQ), or can be performed on a vector of features, commonly called Vector Quantization (VQ). Since a single feature can be regarded as a one-dimensional vector, SQ can be considered as a particular case of VQ. In the following description of this disclosure, the VQ schemes will be discussed. An example of speech coding algorithm which utilizes VQ as well as SQ is the recently adopted International Telecommunications Union (ITU) Recommendation G.729.
The concept of VQ is a well-established technique for signal compression. The technique can be generalized as follows. A table which holds a set of vectors, representing the signal (or some features of the signal), is first constructed. For each vector of the original signal (or a feature vector), the table is searched for the best representative entry in the table. The index of that entry is then stored or transmitted. Using the index as a pointer to an entry in the table, a lossy version of the original vector can be retrieved. The quantization table can be stored or can be represented according to some rule(s), such as a mapping scheme from an index to a vector.
FIG. 2 illustrates a typical structure of a VQ encoder (200) and a VQ decoder (250). The input vector (215) is presented to the search unit (220). The search unit (220) compares the input vector to each of the vectors stored in the VQ table (225), using the comparison unit (230). The comparison unit (230) compares the input vector to a vector in the table (225) using a distance measure which can also depend on a vector of distance parameters (235). The index (140) of the best representative vector is stored or transmitted to the VQ decoder (250) through a communications channel (245). The VQ decoder (250), including a retrieval unit (255), uses the index (240) to retrieve an entry from a copy (260) of the VQ table (225), which becomes the decoded output (265).
In some applications, the VQ table may be represented by a few smaller tables and a combining unit. The single index into the former larger table can be replaced with a few indices into these small tables. Upon retrieval, the entries from all the tables are combined into one output vector. Such VQ systems are commonly called "product code VQ."
The basic structure of a product code VQ is depicted in FIG. 3. A produce code encoder (310) communicates with a product code decoder (350) (or "VQ decoder") via a communication channel (345) coupled to a retrieval unit (360). The input vector (315) is presented to the search unit (320). The search unit (320) compares the input vector to the entries in the multiple VQ tables (325), using the comparison unit (330). The comparison unit (330) compares the input vector to some combination of the vectors in the tables using a distance measure which can depend also on a vector of distance parameters (335). The indices (340) are stored or transmitted to the VQ decoder (350). The VQ decoder (350) uses the indices (340) to retrieve the entries from a copy (355) of the VQ table (325) and combine them using a combining unit (365). The combined vector becomes the decoded output (370).
Commonly, each signal compression scheme (such as a speech coding algorithm) uses specifically pre-designed quantization tables, which might be large and occupy a significant portion of the available memory.
However, in many practical applications, different compression schemes are used for the same signal. For example, different coding algorithms can be used for different rates in a variable-rate speech coding scheme. Hence, a method for sharing quantization tables in those cases is greatly desired. If all the schemes are designed at the same time, quantization tables can be shared by a technique called Constrained Storage VQ ("CSVQ"). However, if a new compression scheme is designed to work together with an already existing compression scheme, a new approach to the sharing of quantization tables is needed.